cxx = g++

topdir = .
srcdir = $(topdir)/src/
incdir = $(topdir)/inc/
objdir = $(topdir)/build/
reldir = $(topdir)/release/

cflags = -c -O2 -Wall -std=c++11 -I $(incdir)

lib = -lmicrohttpd

.PHONY: clean

all: dir release
	@echo Done.

dir:
	@mkdir -p $(objdir)

release: main.o httpd.o conf.o pdf.o cmp.o work.o cJSON.o pdfgen.o
	@$(cxx) -o $(reldir)law $(objdir)*.o $(lib)

main.o: $(srcdir)main.cpp
	@$(cxx) $(cflags) -o $(objdir)main.o $(srcdir)main.cpp

httpd.o: $(srcdir)httpd.cpp $(incdir)httpd.h
	@$(cxx) $(cflags) -o $(objdir)httpd.o $(srcdir)httpd.cpp

conf.o: $(srcdir)conf.cpp $(incdir)conf.h
	@$(cxx) $(cflags) -o $(objdir)conf.o $(srcdir)conf.cpp

pdf.o: $(srcdir)pdf.cpp $(incdir)pdf.h
	@$(cxx) $(cflags) -o $(objdir)pdf.o $(srcdir)pdf.cpp

cmp.o: $(srcdir)cmp.cpp $(incdir)cmp.h
	@$(cxx) $(cflags) -o $(objdir)cmp.o $(srcdir)cmp.cpp

work.o: $(srcdir)work.cpp $(incdir)work.h
	@$(cxx) $(cflags) -o $(objdir)work.o $(srcdir)work.cpp

cJSON.o: $(srcdir)cJSON.c $(incdir)cJSON.h
	@$(cxx) $(cflags) -o $(objdir)cJSON.o $(srcdir)cJSON.c

pdfgen.o: $(srcdir)pdfgen.c $(incdir)pdfgen.h
	@$(cxx) $(cflags) -o $(objdir)pdfgen.o $(srcdir)pdfgen.c

clean:
	@rm $(reldir)law
	@rm -rf $(objdir)
	@echo Done.